v03 UVA10035 Primary Arithmetic
內容
在小學時我們都做過加法的運算,就是把2個整數靠右對齊然後,由右至左一位一位相加。如果相加的結果大於等於10就有進位(carry)的情況出現。你的任務就是要判斷2個整數相加時產生了幾次進位的情況。這將幫助小學老師分析加法題目的難度。
輸入說明
每一列測試資料有2個正整數,長度均小於10位。最後一列有2個0代表輸入結束。
輸出說明
每列測試資料輸出該2數相加時產生多少次進位,請參考Sample Output。注意進位超過1次時operation有加s
範例輸入
123 456
555 555
123 594
0 0
範例輸出
No carry operation.
3 carry operations.
1 carry operation.
題目大意:你的任務就是要判斷2個整數相加時產生了幾次進位的情況。這將幫助小學老師分析加法題目的難度。
解題:兩數相加後,有幾次進位
#進入無限循環,直到用戶輸入m和n都為0才跳出循環
while True:
#從用戶輸入讀取兩個整數,以空格分隔,並將它們分別賦值給m和n
m, n = map(int, input().split())
#如果m和n都為0,則跳出循環
if m == 0 and n == 0:
break
#初始化變數sum為0,用於計算進位操作的次數
sum = 0
#初始化變數x為0,用於記錄進位
x = 0
#進入循環,直到m和n都變為0
while m > 0 or n > 0:
# 取出m和n的個位數,並將它們相加,再加上上一次的進位x
if m % 10 + n % 10 + x >= 10:
# 如果相加結果大於等於10,表示有進位
#增加進位操作次數sum
sum += 1
#設置進位x為1
x = 1
else:
# 如果相加結果小於10,則無進位
#設置進位x為0
x = 0
#將m和n各自除以10,以去掉已經處理的個位數
m //= 10
n //= 10
#根據進位操作次數sum的不同情況輸出結果
if sum == 0:
print("No carry operation.")
elif sum == 1:
print("1 carry operation.")
else:
print("{} carry operations.".format(sum))